import java.util.HashMap;

/**
 * Created by Scott Tiger.
 * User: tomaszsocha
 * Date: 2010-03-29
 * Time: 13:03:49
 */
public class Koszulka extends Item {



    public Koszulka(String prefix,String sufix,HashMap<String,Integer> wagi)
    {
        setPrefix(prefix);
        setSufix(sufix);
        setWagaPref(wagi.get(prefix));
        setWagaSuf(wagi.get(sufix));
        setWaga(getWagaPref()*getWagaSuf());
    }

        public Koszulka(String prefix,String sufix)
    {
        setPrefix(prefix);
        setSufix(sufix);

    }

    public Koszulka(String prefix,String sufix,Koszulka k1,Koszulka k2, HashMap<String,Integer> wagi)
    {
        setPrefix(prefix);
        setSufix(sufix);
        setSkladnik1(k1);
        setSkladnik2(k2);
        setOpis(k1.getPrefix()+"."+k1.getSufix()+"|"+k2.getPrefix()+"."+k2.getSufix());
        setWagaPref(wagi.get(prefix));
        setWagaSuf(wagi.get(sufix));
        setWaga(getWagaPref()*getWagaSuf());
    }


    public String getIngredients(){
        Koszulka skladnik1 = (Koszulka) getSkladnik1();
        Koszulka skladnik2 = (Koszulka) getSkladnik2();
        if (skladnik1 != null){
            return "("+skladnik1.getIngredients() +"+"+skladnik2.getIngredients()+"=>"+getPrefix()+","+getSufix()+")";
        }          else  {
            return "("+getPrefix()+","+getSufix()+")";
        }
    }

    public int totalCost() {
        Koszulka skladnik1 = (Koszulka) getSkladnik1();
        Koszulka skladnik2 = (Koszulka) getSkladnik2();
        if (skladnik1 == null)
            return 0;

        return skladnik1.totalCost()+skladnik2.totalCost()+1;
    }


    public boolean czySkladnik(Koszulka newKoszulka) {
        Koszulka skladnik1 = (Koszulka) getSkladnik1();
        Koszulka skladnik2 = (Koszulka) getSkladnik2();
        if (skladnik1 == null) {
           return false;
        }
        else {
          if (newKoszulka.getPrefix().equals(skladnik1.getPrefix())&& newKoszulka.getSufix().equals(skladnik1.getSufix())){
            return true;
          }
          else if (newKoszulka.getPrefix().equals(skladnik2.getPrefix()) && newKoszulka.getSufix().equals(skladnik2.getSufix())) {
               return true;
          }
          else {
           return (skladnik1.czySkladnik(newKoszulka) || skladnik2.czySkladnik(newKoszulka));
          }
        }
    }

}
